home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / pctchnqs / 1991 / number2 / tvt.pas < prev    next >
Pascal/Delphi Source File  |  1990-10-04  |  3KB  |  129 lines

  1. {$X+}
  2. program TVTerminal;
  3.  
  4. uses  ComIO, VTDlg, Dial, App, Drivers, MsgBox, Crt,
  5.       Menus, Memory, Objects, Views;
  6.  
  7. const
  8.   DialPrefix = 'ATDT';
  9.   cMyBase           = 200;
  10.   cmOpenLogFile     = cMyBase+1;
  11.   cmLineSet         = cMyBase+2;
  12.   cmTerminalSet     = cMyBase+3;
  13.   cmSetLocalEcho    = cMyBase+4;
  14.   cmDoManualDial    = cMyBase+5;
  15.   cmDoHangUp        = cMyBase+6;
  16.  
  17. type
  18.   TVTerm = object(TApplication)
  19.     ComWindow: PComWindow;
  20.     constructor Init;
  21.     procedure HandleEvent(var Event: TEvent); virtual;
  22.     procedure Idle; virtual;
  23.     procedure InitStatusLine; virtual;
  24.     procedure InitMenuBar; virtual;
  25.     procedure InitDeskTop; virtual;
  26.   end;
  27.  
  28. constructor TVTerm.Init;
  29. begin
  30.   TApplication.Init;
  31.   ComWindow:=New(PComWindow, Init);
  32.   Desktop^.Insert(ComWindow);
  33. end;
  34.  
  35. procedure TVTerm.InitStatusLine;
  36. var R: TRect;
  37. begin
  38.   GetExtent(R);
  39.   R.A.Y := R.B.Y;
  40.   StatusLine := New(PStatusLine, Init(R,
  41.     NewStatusDef(0, $FFFF,
  42.       NewStatusKey('', kbF10, cmMenu,
  43.       NewStatusKey('', kbF3, cmOpenLogFile,
  44.       NewStatusKey('', kbF5, cmZoom,
  45.       NewStatusKey('', kbAltX, cmQuit, nil)))),
  46.     nil)));
  47. end;
  48.  
  49. procedure TVTerm.InitMenuBar;
  50. var R: TRect;
  51. begin
  52.   GetExtent(R);
  53.   R.B.Y := R.A.Y + 1;
  54.   MenuBar := New(PMenuBar, Init(R, NewMenu(
  55.     NewSubMenu('~F~ile', hcNoContext, NewMenu(
  56.       NewItem('~O~pen Log', 'F3', kbF3, cmOpenLogFile, hcNoContext,
  57.       NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext, nil))),
  58.     NewSubMenu('~P~hone', hcNoContext, NewMenu(
  59.       NewItem('~H~ang up phone', 'Alt-H', kbAltH, cmDoHangUp, hcNoContext,
  60.       NewItem('~D~ial', 'Alt-D', kbAltD, cmDoManualDial, hcNoContext, nil))),
  61.     NewSubMenu('~S~etup', hcNoContext, NewMenu(
  62.       NewItem('~L~ine Settings', 'Alt-L', kbAltL, cmLineSet, hcNoContext,
  63.       NewItem('Local ~E~cho', '', 0, cmSetLocalEcho, hcNoContext, nil))),
  64.     nil))))));
  65. end;
  66.  
  67. procedure TVTerm.InitDeskTop;
  68. var R: TRect;
  69. begin
  70.   GetExtent(R);
  71.   Inc(R.A.Y);
  72.   New(DeskTop, Init(R));
  73. end;
  74.  
  75. procedure TVTerm.Idle;
  76. var S : String;
  77. begin
  78.   TApplication.Idle;
  79.   if ComAvail then
  80.   begin
  81.     S:='';
  82.     while ComAvail do
  83.     begin
  84.       S:=S+Char(ComGet);
  85.       if Length(S) = 255 then
  86.       begin
  87.         Write(ComWindow^.Win, S);
  88.         S:='';
  89.       end;
  90.     end;
  91.     Write(ComWindow^.Win, S);
  92.   end;
  93. end;
  94.  
  95. procedure TVTerm.HandleEvent(var Event: TEvent);
  96. var
  97.   Bounds: TRect;
  98.   DialString: String;
  99. begin
  100.   TApplication.HandleEvent(Event);
  101.   if Event.What = evCommand then
  102.   begin
  103.     case Event.Command of
  104.       cmSetLocalEcho: ComWindow^.SetLocalEcho;
  105.       cmLineSet: ComWindow^.SetLineDialog;
  106.       cmDoHangUp: begin
  107.         ComPutString('+++');
  108.         Delay(1500);
  109.         ComPutString('ATH0'^M);
  110.       end;
  111.       cmDoManualDial: begin
  112.         DialString := GetPhoneNum;
  113.         if DialString <> '' then
  114.           ComPutString(DialPrefix+DialString+^M);
  115.       end;
  116.       cmOpenLogFile: ErrorDialog('currently NOT supported');
  117.     else Exit;
  118.     end;
  119.     ClearEvent(Event);
  120.   end;
  121. end;
  122.  
  123. var VTerm: TVTerm;
  124. begin
  125.   VTerm.Init;
  126.   VTerm.Run;
  127.   VTerm.Done;
  128. end.
  129.